1. 搭建橋樑:資料載入基礎
深度學習模型依賴於乾淨且一致的資料,但現實世界中的資料集本質上是雜亂無章的。我們必須從預先打包的基準測試(如MNIST)轉向管理未結構化的資料來源,其中資料載入本身便是一個複雜的協調任務。此過程的基礎在於PyTorch專為資料管理設計的工具。
核心挑戰在於將儲存在磁碟上的原始、分散的資料(影像、文字、音訊檔案)轉換為高度組織化且標準化的PyTorch 張量格式GPU所期望的格式。這需要自訂邏輯來進行索引、載入、預處理,最後再進行批次化。
現實世界資料的關鍵挑戰
- 資料混亂:資料分散於多個目錄中,通常僅由CSV檔案索引。
- 需要預處理:影像可能需要調整大小、歸一化或增強,才能轉換為張量。
- 效率目標:資料必須以優化、非阻塞的批次形式傳送到GPU,以最大化訓練速度。
PyTorch的解決方案:分離職責
PyTorch強調職責分離:
Dataset負責「什麼」(如何存取單一樣本與標籤),而DataLoader則負責「如何」(高效批次化、打亂順序及多執行緒傳輸)。
終端機bash — data-env
> 已準備就緒。點擊「執行」開始運行。
>
張量檢視器即時
執行程式碼以檢視活躍的張量
問題 1
PyTorch
Dataset物件的主要功能是什麼?問題 2
哪一個
DataLoader參數可利用多個CPU核心進行平行載入資料?問題 3
如果您的原始影像尺寸各不相同,哪個元件主要負責將它們調整為統一的尺寸(例如 $224 \times 224$)?
挑戰:自訂影像載入器藍圖
定義真實世界影像分類所需的結構。
您正在建立一個
CustomDataset,用於10,000張影像,這些影像由包含路徑與標籤的單一CSV檔案索引。
第一步
哪個必備方法必須回傳樣本總數?
解答:
Concept: Defines the epoch size.
__len__方法。Concept: Defines the epoch size.
第二步
在
__getitem__(self, index)中,正確的操作順序為何?解答:
1. 使用
2. 載入原始資料(例如影像)。
3. 套用必要的
4. 回傳處理後的張量與標籤。
1. 使用
index。2. 載入原始資料(例如影像)。
3. 套用必要的
transforms。4. 回傳處理後的張量與標籤。